/**
 * 
 */
package br.com.skynix.tcmc.controller.financeiro.contas_financeiros;

import java.util.Collection;
import java.util.List;

import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import org.springframework.stereotype.Controller;

import br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean;
import br.com.skynix.tcmc.base.spring.IServiceAuditavel;
import br.com.skynix.tcmc.model.enumeration.ProvisaoEnum;
import br.com.skynix.tcmc.model.enumeration.StatusFinanceiroEnum;
import br.com.skynix.tcmc.model.enumeration.TipoContaFinanceiroEnum;
import br.com.skynix.tcmc.model.financeiro.Banco;
import br.com.skynix.tcmc.model.financeiro.CentroCusto;
import br.com.skynix.tcmc.model.financeiro.ContaFinanceiro;
import br.com.skynix.tcmc.model.financeiro.Despesa;
import br.com.skynix.tcmc.model.financeiro.FormaPagamento;
import br.com.skynix.tcmc.model.financeiro.Natureza;
import br.com.skynix.tcmc.model.financeiro.Operacao;
import br.com.skynix.tcmc.model.financeiro.Portador;
import br.com.skynix.tcmc.model.rh.Empresa;
import br.com.skynix.tcmc.service.configuracao.financeiro.bancos.BancoService;
import br.com.skynix.tcmc.service.configuracao.financeiro.centros_custos.CentroCustoService;
import br.com.skynix.tcmc.service.configuracao.financeiro.despesas.DespesaService;
import br.com.skynix.tcmc.service.configuracao.financeiro.formas_pagamentos.FormaPagamentoService;
import br.com.skynix.tcmc.service.configuracao.financeiro.naturezas.NaturezaService;
import br.com.skynix.tcmc.service.configuracao.financeiro.operacoes.OperacaoService;
import br.com.skynix.tcmc.service.configuracao.financeiro.portadores.PortadorService;
import br.com.skynix.tcmc.service.financeiro.contaFinanceiro.ContaFinanceiroService;
import br.com.skynix.tcmc.service.rh.empresas.EmpresaService;

/**
 * @author davi
 * 
 */
@ManagedBean
@RequestScoped
@Controller
public class ContaFinanceiroMB extends AbstractCRUDManagedBean<ContaFinanceiro> {
	@Resource
	private ContaFinanceiroService contaFinanceiroService;

	@Resource
	private NaturezaService naturezaService;

	@Resource
	private EmpresaService empresaService;

	@Resource
	private OperacaoService operacaoService;

	@Resource
	private CentroCustoService centroCustoService;

	@Resource
	private FormaPagamentoService formaPagamentoService;

	@Resource
	private DespesaService despesaService;

	@Resource
	private PortadorService portadorService;

	@Resource
	private BancoService bancoService;

	/**
	 * 
	 */
	public ContaFinanceiroMB() {
		setModeloPesquisa(new ContaFinanceiro());
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#getService()
	 */
	@Override
	protected IServiceAuditavel<ContaFinanceiro> getService() {
		return contaFinanceiroService;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#
	 * getPathParaModuloCRUD()
	 */
	@Override
	protected String getPathParaModuloCRUD() {
		return formatPath("financeiro/contas_financeiro/conta_financeiro_crud_view");
	}

	public Collection<TipoContaFinanceiroEnum> getListaTipoFinanceiro() {
		return TipoContaFinanceiroEnum.listAll();
	}

	public List<Natureza> getListaNatureza() {
		return naturezaService.listarTodos();
	}

	public List<Empresa> getListaEmpresa() {
		return empresaService.listarTodos();
	}

	public List<Operacao> getListaOperacao() {
		return operacaoService.listarTodos();
	}

	public List<CentroCusto> getListaCentroCusto() {
		return centroCustoService.listarTodos();
	}

	public List<FormaPagamento> getListaFormaPagamento() {
		return formaPagamentoService.listarTodos();
	}

	public List<Despesa> getListaDespesa() {
		return despesaService.listarTodos();
	}

	public List<Portador> getListaPortador() {
		return portadorService.listarTodos();
	}

	public List<Banco> getListaBanco() {
		return bancoService.listarTodos();
	}

	public Collection<StatusFinanceiroEnum> getListaStatusFinanceiro() {
		return StatusFinanceiroEnum.listAll();
	}

	public Collection<ProvisaoEnum> getListaProvisao() {
		return ProvisaoEnum.listAll();
	}

	public String carregarFormInclusao() {
		String baseUrl = carregarCRUD();
		irParaInclusao();
		return baseUrl;
	}
}
